package com.zk.bytecode.trace;

import java.util.Objects;

/**
 *
 */
public class StackTraceCompare {

    public enum Result {
        // 相同的StackTrace
        Same,
        // 方法差异
        MethodDiff,
        // 行号差异
        LineNumberDiff
    }

    public static Result compare(StackTraceElement el1, StackTraceElement el2) {
        if (Objects.equals(el1, el1)) {
            return Result.Same;
        } else if (
                el1.getLineNumber() != el2.getLineNumber() &&
                        Objects.equals(el1.getClassName(), el2.getClassName())
                        && Objects.equals(el1.getMethodName(), el2.getMethodName())
                        && Objects.equals(el1.getFileName(), el2.getFileName())
        ) {
            return Result.LineNumberDiff;
        } else {
            return Result.MethodDiff;
        }


    }

}
